{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 在https://www.kaggle.com/c/titanic Kaggle网站上下载和处理泰坦尼克数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\ensemble\\weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import os, re\n",
    "import matplotlib.pyplot as plt\n",
    "from pandas.plotting import scatter_matrix\n",
    "from sklearn.preprocessing import Imputer\n",
    "from sklearn.base import BaseEstimator, TransformerMixin\n",
    "from sklearn.preprocessing import LabelBinarizer, MultiLabelBinarizer\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.pipeline import FeatureUnion\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.svm import SVC, LinearSVC\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.linear_model import Perceptron\n",
    "%matplotlib inline\n",
    "\n",
    "path = os.getcwd()\n",
    "data_path = os.path.join(path,'datasets','titanic')\n",
    "train_csv_path = os.path.join(data_path, 'train.csv')\n",
    "\n",
    "def load_csv(datapath,csv_name):\n",
    "    train_csv_path = os.path.join(data_path, csv_name)\n",
    "    return pd.read_csv(train_csv_path)\n",
    "\n",
    "class DataFrameSelector(BaseEstimator, TransformerMixin):\n",
    "    def __init__(self, attribute_names):\n",
    "        self.attribute_names = attribute_names\n",
    "    def fit(self, x, y=None):\n",
    "        return self\n",
    "    def transform(self, x):\n",
    "        return x[self.attribute_names].values\n",
    "    \n",
    "class MyMultiLabelBinarizer(TransformerMixin):\n",
    "    def __init__(self, *args, **kwargs):\n",
    "        self.encoder = MultiLabelBinarizer(*args, **kwargs)\n",
    "    def fit(self, x, y=0):\n",
    "        self.encoder.fit(x)\n",
    "        return self\n",
    "    def transform(self, x, y=0):\n",
    "        MyMultiLabelBinarizer_cols = self.encoder.classes_\n",
    "        print(MyMultiLabelBinarizer_cols)\n",
    "        return self.encoder.transform(x)\n",
    "    \n",
    "class MyLabelBinarizer(TransformerMixin):\n",
    "    def __init__(self, *args, **kwargs):\n",
    "        self.encoder = LabelBinarizer(*args, **kwargs)\n",
    "    def fit(self, x, y=0):\n",
    "        self.encoder.fit(x)\n",
    "        return self\n",
    "    def transform(self, x, y=0):\n",
    "        MyLabelBinarizer_cols = self.encoder.classes_\n",
    "        print(MyLabelBinarizer_cols)\n",
    "        return self.encoder.transform(x)\n",
    "    \n",
    "def submit_csv(csv_name, y_pred):\n",
    "    submission = pd.DataFrame({\n",
    "            \"PassengerId\": test_data[\"PassengerId\"],\n",
    "            \"Survived\": y_pred\n",
    "        })\n",
    "    submission.to_csv('./'+csv_name, index=False)\n",
    "    \n",
    "def general_algorithm(algo,X_train, y_train, X_test, freq=5, verbose=3):\n",
    "    algo.fit(X_train, y_train)\n",
    "    algo_score = cross_val_score(algo, X_train, y_train, cv=freq, scoring='accuracy')\n",
    "    algo_name = re.sub('\\((.+\\n.+)+\\)','',str(algo))\n",
    "    algo_score = round(algo_score.mean()*100,2)\n",
    "    print('{0}:{1}%'.format(algo_name, algo_score))\n",
    "    y_pred = algo.predict(X_test)\n",
    "    submit_csv(algo_name + '_result.csv', y_pred)\n",
    "    print(algo_name + '_result.csv generated!')\n",
    "    return algo_name, algo_score"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 读取数据 + 查看数据概况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Unnamed: 12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  Unnamed: 12  \n",
       "0      0         A/5 21171   7.2500   NaN        S          NaN  \n",
       "1      0          PC 17599  71.2833   C85        C          NaN  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S          NaN  \n",
       "3      0            113803  53.1000  C123        S          NaN  \n",
       "4      0            373450   8.0500   NaN        S          NaN  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data = load_csv(data_path, 'Kaggle_train.csv')\n",
    "train_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Unnamed: 11</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>892</td>\n",
       "      <td>3</td>\n",
       "      <td>Kelly, Mr. James</td>\n",
       "      <td>male</td>\n",
       "      <td>34.5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330911</td>\n",
       "      <td>7.8292</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>893</td>\n",
       "      <td>3</td>\n",
       "      <td>Wilkes, Mrs. James (Ellen Needs)</td>\n",
       "      <td>female</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>363272</td>\n",
       "      <td>7.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>894</td>\n",
       "      <td>2</td>\n",
       "      <td>Myles, Mr. Thomas Francis</td>\n",
       "      <td>male</td>\n",
       "      <td>62.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>240276</td>\n",
       "      <td>9.6875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>895</td>\n",
       "      <td>3</td>\n",
       "      <td>Wirz, Mr. Albert</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>315154</td>\n",
       "      <td>8.6625</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>896</td>\n",
       "      <td>3</td>\n",
       "      <td>Hirvonen, Mrs. Alexander (Helga E Lindqvist)</td>\n",
       "      <td>female</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3101298</td>\n",
       "      <td>12.2875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Pclass                                          Name     Sex  \\\n",
       "0          892       3                              Kelly, Mr. James    male   \n",
       "1          893       3              Wilkes, Mrs. James (Ellen Needs)  female   \n",
       "2          894       2                     Myles, Mr. Thomas Francis    male   \n",
       "3          895       3                              Wirz, Mr. Albert    male   \n",
       "4          896       3  Hirvonen, Mrs. Alexander (Helga E Lindqvist)  female   \n",
       "\n",
       "    Age  SibSp  Parch   Ticket     Fare Cabin Embarked  Unnamed: 11  \n",
       "0  34.5      0      0   330911   7.8292   NaN        Q          NaN  \n",
       "1  47.0      1      0   363272   7.0000   NaN        S          NaN  \n",
       "2  62.0      0      0   240276   9.6875   NaN        Q          NaN  \n",
       "3  27.0      0      0   315154   8.6625   NaN        S          NaN  \n",
       "4  22.0      1      1  3101298  12.2875   NaN        S          NaN  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data = load_csv(data_path, 'Kaggle_test.csv')\n",
    "test_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 13 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      " 12  Unnamed: 12  0 non-null      float64\n",
      "dtypes: float64(3), int64(5), object(5)\n",
      "memory usage: 90.6+ KB\n"
     ]
    }
   ],
   "source": [
    "train_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Unnamed: 12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  Unnamed: 12  \n",
       "count  891.000000  891.000000          0.0  \n",
       "mean     0.381594   32.204208          NaN  \n",
       "std      0.806057   49.693429          NaN  \n",
       "min      0.000000    0.000000          NaN  \n",
       "25%      0.000000    7.910400          NaN  \n",
       "50%      0.000000   14.454200          NaN  \n",
       "75%      0.000000   31.000000          NaN  \n",
       "max      6.000000  512.329200          NaN  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3    491\n",
      "1    216\n",
      "2    184\n",
      "Name: Pclass, dtype: int64\n",
      "******************************\n",
      "male      577\n",
      "female    314\n",
      "Name: Sex, dtype: int64\n",
      "******************************\n",
      "S    644\n",
      "C    168\n",
      "Q     77\n",
      "Name: Embarked, dtype: int64\n",
      "******************************\n"
     ]
    }
   ],
   "source": [
    "cat_list = ['Pclass', 'Sex', 'Embarked']\n",
    "for cat in cat_list:\n",
    "    print(train_data[cat].value_counts())\n",
    "    print('*'*30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train_set_size:891\n",
      "test_set_size:418\n"
     ]
    }
   ],
   "source": [
    "print('train_set_size:{0}\\ntest_set_size:{1}'.format(len(train_data), len(test_data)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Unnamed: 12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  Unnamed: 12  \n",
       "0      0         A/5 21171   7.2500   NaN        S          NaN  \n",
       "1      0          PC 17599  71.2833   C85        C          NaN  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S          NaN  \n",
       "3      0            113803  53.1000  C123        S          NaN  \n",
       "4      0            373450   8.0500   NaN        S          NaN  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "problem_data = train_data[train_data.isnull().any(axis=1)]\n",
    "problem_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Unnamed: 12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  Unnamed: 12  \n",
       "count  891.000000  891.000000          0.0  \n",
       "mean     0.381594   32.204208          NaN  \n",
       "std      0.806057   49.693429          NaN  \n",
       "min      0.000000    0.000000          NaN  \n",
       "25%      0.000000    7.910400          NaN  \n",
       "50%      0.000000   14.454200          NaN  \n",
       "75%      0.000000   31.000000          NaN  \n",
       "max      6.000000  512.329200          NaN  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "problem_data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 891 entries, 0 to 890\n",
      "Data columns (total 13 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      " 12  Unnamed: 12  0 non-null      float64\n",
      "dtypes: float64(3), int64(5), object(5)\n",
      "memory usage: 97.5+ KB\n"
     ]
    }
   ],
   "source": [
    "problem_data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 处理数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 889 entries, 0 to 890\n",
      "Data columns (total 13 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  889 non-null    int64  \n",
      " 1   Survived     889 non-null    int64  \n",
      " 2   Pclass       889 non-null    int64  \n",
      " 3   Name         889 non-null    object \n",
      " 4   Sex          889 non-null    object \n",
      " 5   Age          712 non-null    float64\n",
      " 6   SibSp        889 non-null    int64  \n",
      " 7   Parch        889 non-null    int64  \n",
      " 8   Ticket       889 non-null    object \n",
      " 9   Fare         889 non-null    float64\n",
      " 10  Cabin        202 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      " 12  Unnamed: 12  0 non-null      float64\n",
      "dtypes: float64(3), int64(5), object(5)\n",
      "memory usage: 97.2+ KB\n"
     ]
    }
   ],
   "source": [
    "# 我们知道‘Name’, 'Ticket', 'Cabin'对预测意义不大，Cabin也许有关系可是数据量少得太离谱， 我们把这几列都拿掉, \n",
    "# 这些可以透过DataFrameSelector来完成， 我们先把没有Embarked数据的两行删除\n",
    "train_data_drop_na = train_data.dropna(subset=['Embarked'])\n",
    "train_data_drop_na.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_attribs = ['Age', 'SibSp', 'Parch', 'Fare', 'Survived']\n",
    "num_attribs_test = ['Age', 'SibSp', 'Parch', 'Fare']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_pipeline = Pipeline(\n",
    "[\n",
    "    ('features selector', DataFrameSelector(num_attribs)),\n",
    "    ('imputer', Imputer(strategy='median'))\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_pipeline_test = Pipeline(\n",
    "[\n",
    "    ('features selector', DataFrameSelector(num_attribs_test)),\n",
    "    ('imputer', Imputer(strategy='median'))\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_attribs_multi = ['Sex', 'Embarked']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_pipeline_multi = Pipeline([\n",
    "        ('selector', DataFrameSelector(cat_attribs_multi)),               \n",
    "        ('MultiLabelBinarizer', MyMultiLabelBinarizer()),\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_attribs = ['Pclass']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_pipeline = Pipeline([\n",
    "        ('selector', DataFrameSelector(cat_attribs)),               \n",
    "        ('MultiLabelBinarizer', MyLabelBinarizer()),\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22.    ,  1.    ,  0.    ,  7.25  ,  0.    ],\n",
       "       [38.    ,  1.    ,  0.    , 71.2833,  1.    ],\n",
       "       [26.    ,  0.    ,  0.    ,  7.925 ,  1.    ],\n",
       "       ...,\n",
       "       [28.    ,  1.    ,  2.    , 23.45  ,  0.    ],\n",
       "       [26.    ,  0.    ,  0.    , 30.    ,  1.    ],\n",
       "       [32.    ,  0.    ,  0.    ,  7.75  ,  0.    ]])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_pipeline.fit_transform(train_data_drop_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['C' 'Q' 'S' 'female' 'male']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 1, 0, 1],\n",
       "       [1, 0, 0, 1, 0],\n",
       "       [0, 0, 1, 1, 0],\n",
       "       ...,\n",
       "       [0, 0, 1, 1, 0],\n",
       "       [1, 0, 0, 0, 1],\n",
       "       [0, 1, 0, 0, 1]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cat_pipeline_multi.fit_transform(train_data_drop_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 2 3]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 1],\n",
       "       [1, 0, 0],\n",
       "       [0, 0, 1],\n",
       "       ...,\n",
       "       [0, 0, 1],\n",
       "       [1, 0, 0],\n",
       "       [0, 0, 1]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cat_pipeline.fit_transform(train_data_drop_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "full_pipeline = FeatureUnion(\n",
    "transformer_list = [\n",
    "    ('num_pipeline',num_pipeline,),\n",
    "    ('cat_pipeline_multi', cat_pipeline_multi),\n",
    "    ('cat_pipeline', cat_pipeline)\n",
    "]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "full_pipeline_test = FeatureUnion(\n",
    "transformer_list = [\n",
    "    ('num_pipeline',num_pipeline_test,),\n",
    "    ('cat_pipeline_multi', cat_pipeline_multi),\n",
    "    ('cat_pipeline', cat_pipeline)\n",
    "]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['C' 'Q' 'S' 'female' 'male']\n",
      "[1 2 3]\n"
     ]
    }
   ],
   "source": [
    "X_train = full_pipeline.fit_transform(train_data_drop_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22.    ,  1.    ,  0.    ,  7.25  ,  0.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [38.    ,  1.    ,  0.    , 71.2833,  1.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [26.    ,  0.    ,  0.    ,  7.925 ,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [35.    ,  1.    ,  0.    , 53.1   ,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  1.    ,  0.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [35.    ,  0.    ,  0.    ,  8.05  ,  0.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [28.    ,  0.    ,  0.    ,  8.4583,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [54.    ,  0.    ,  0.    , 51.8625,  0.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [ 2.    ,  3.    ,  1.    , 21.075 ,  0.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [27.    ,  0.    ,  2.    , 11.1333,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [14.    ,  1.    ,  0.    , 30.0708,  1.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ,  0.    ]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 418 entries, 0 to 417\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  418 non-null    int64  \n",
      " 1   Pclass       418 non-null    int64  \n",
      " 2   Name         418 non-null    object \n",
      " 3   Sex          418 non-null    object \n",
      " 4   Age          332 non-null    float64\n",
      " 5   SibSp        418 non-null    int64  \n",
      " 6   Parch        418 non-null    int64  \n",
      " 7   Ticket       418 non-null    object \n",
      " 8   Fare         417 non-null    float64\n",
      " 9   Cabin        91 non-null     object \n",
      " 10  Embarked     418 non-null    object \n",
      " 11  Unnamed: 11  0 non-null      float64\n",
      "dtypes: float64(3), int64(4), object(5)\n",
      "memory usage: 39.3+ KB\n"
     ]
    }
   ],
   "source": [
    "test_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['C' 'Q' 'S' 'female' 'male']\n",
      "[1 2 3]\n"
     ]
    }
   ],
   "source": [
    "X_test = full_pipeline_test.fit_transform(test_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[34.5   ,  0.    ,  0.    ,  7.8292,  0.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [47.    ,  1.    ,  0.    ,  7.    ,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [62.    ,  0.    ,  0.    ,  9.6875,  0.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  1.    ,  0.    ],\n",
       "       [27.    ,  0.    ,  0.    ,  8.6625,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [22.    ,  1.    ,  1.    , 12.2875,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [14.    ,  0.    ,  0.    ,  9.225 ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [30.    ,  0.    ,  0.    ,  7.6292,  0.    ,  1.    ,  0.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [26.    ,  1.    ,  1.    , 29.    ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  1.    ,  0.    ],\n",
       "       [18.    ,  0.    ,  0.    ,  7.2292,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [21.    ,  2.    ,  0.    , 24.15  ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>22.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>884</th>\n",
       "      <td>27.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>885</th>\n",
       "      <td>19.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>28.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>32.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>889 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        0    1    2        3    4    5    6    7    8    9   10   11   12\n",
       "0    22.0  1.0  0.0   7.2500  0.0  0.0  0.0  1.0  0.0  1.0  0.0  0.0  1.0\n",
       "1    38.0  1.0  0.0  71.2833  1.0  1.0  0.0  0.0  1.0  0.0  1.0  0.0  0.0\n",
       "2    26.0  0.0  0.0   7.9250  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0\n",
       "3    35.0  1.0  0.0  53.1000  1.0  0.0  0.0  1.0  1.0  0.0  1.0  0.0  0.0\n",
       "4    35.0  0.0  0.0   8.0500  0.0  0.0  0.0  1.0  0.0  1.0  0.0  0.0  1.0\n",
       "..    ...  ...  ...      ...  ...  ...  ...  ...  ...  ...  ...  ...  ...\n",
       "884  27.0  0.0  0.0  13.0000  0.0  0.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0\n",
       "885  19.0  0.0  0.0  30.0000  1.0  0.0  0.0  1.0  1.0  0.0  1.0  0.0  0.0\n",
       "886  28.0  1.0  2.0  23.4500  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0\n",
       "887  26.0  0.0  0.0  30.0000  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0\n",
       "888  32.0  0.0  0.0   7.7500  0.0  0.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0\n",
       "\n",
       "[889 rows x 13 columns]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#pd.DataFrame(X_train, columns=train_data_drop_na.columns, index=train_data_drop_na.index)\n",
    "pd.DataFrame(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Age',\n",
       " 'SibSp',\n",
       " 'Parch',\n",
       " 'Fare',\n",
       " 'Survived',\n",
       " 'Embarked_C',\n",
       " 'Embarked_Q',\n",
       " 'Embarked_S',\n",
       " 'Sex_female',\n",
       " 'Sex_male',\n",
       " 'Pclass_1',\n",
       " 'Pclass_2',\n",
       " 'Pclass_3']"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_cols = num_attribs + ['Embarked_C','Embarked_Q','Embarked_S','Sex_female','Sex_male'] + ['Pclass_1','Pclass_2','Pclass_3']\n",
    "X_train_cols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>22.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Age  SibSp  Parch     Fare  Survived  Embarked_C  Embarked_Q  Embarked_S  \\\n",
       "0  22.0    1.0    0.0   7.2500       0.0         0.0         0.0         1.0   \n",
       "1  38.0    1.0    0.0  71.2833       1.0         1.0         0.0         0.0   \n",
       "2  26.0    0.0    0.0   7.9250       1.0         0.0         0.0         1.0   \n",
       "3  35.0    1.0    0.0  53.1000       1.0         0.0         0.0         1.0   \n",
       "4  35.0    0.0    0.0   8.0500       0.0         0.0         0.0         1.0   \n",
       "\n",
       "   Sex_female  Sex_male  Pclass_1  Pclass_2  Pclass_3  \n",
       "0         0.0       1.0       0.0       0.0       1.0  \n",
       "1         1.0       0.0       1.0       0.0       0.0  \n",
       "2         1.0       0.0       0.0       0.0       1.0  \n",
       "3         1.0       0.0       1.0       0.0       0.0  \n",
       "4         0.0       1.0       0.0       0.0       1.0  "
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_df = pd.DataFrame(X_train, columns=X_train_cols)\n",
    "X_train_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>29.315152</td>\n",
       "      <td>0.524184</td>\n",
       "      <td>0.382452</td>\n",
       "      <td>32.096681</td>\n",
       "      <td>0.382452</td>\n",
       "      <td>0.188976</td>\n",
       "      <td>0.086614</td>\n",
       "      <td>0.724409</td>\n",
       "      <td>0.350956</td>\n",
       "      <td>0.649044</td>\n",
       "      <td>0.240720</td>\n",
       "      <td>0.206974</td>\n",
       "      <td>0.552306</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>12.984932</td>\n",
       "      <td>1.103705</td>\n",
       "      <td>0.806761</td>\n",
       "      <td>49.697504</td>\n",
       "      <td>0.486260</td>\n",
       "      <td>0.391710</td>\n",
       "      <td>0.281427</td>\n",
       "      <td>0.447063</td>\n",
       "      <td>0.477538</td>\n",
       "      <td>0.477538</td>\n",
       "      <td>0.427761</td>\n",
       "      <td>0.405365</td>\n",
       "      <td>0.497536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>22.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.895800</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>35.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              Age       SibSp       Parch        Fare    Survived  Embarked_C  \\\n",
       "count  889.000000  889.000000  889.000000  889.000000  889.000000  889.000000   \n",
       "mean    29.315152    0.524184    0.382452   32.096681    0.382452    0.188976   \n",
       "std     12.984932    1.103705    0.806761   49.697504    0.486260    0.391710   \n",
       "min      0.420000    0.000000    0.000000    0.000000    0.000000    0.000000   \n",
       "25%     22.000000    0.000000    0.000000    7.895800    0.000000    0.000000   \n",
       "50%     28.000000    0.000000    0.000000   14.454200    0.000000    0.000000   \n",
       "75%     35.000000    1.000000    0.000000   31.000000    1.000000    0.000000   \n",
       "max     80.000000    8.000000    6.000000  512.329200    1.000000    1.000000   \n",
       "\n",
       "       Embarked_Q  Embarked_S  Sex_female    Sex_male    Pclass_1    Pclass_2  \\\n",
       "count  889.000000  889.000000  889.000000  889.000000  889.000000  889.000000   \n",
       "mean     0.086614    0.724409    0.350956    0.649044    0.240720    0.206974   \n",
       "std      0.281427    0.447063    0.477538    0.477538    0.427761    0.405365   \n",
       "min      0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   \n",
       "25%      0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   \n",
       "50%      0.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "75%      0.000000    1.000000    1.000000    1.000000    0.000000    0.000000   \n",
       "max      1.000000    1.000000    1.000000    1.000000    1.000000    1.000000   \n",
       "\n",
       "         Pclass_3  \n",
       "count  889.000000  \n",
       "mean     0.552306  \n",
       "std      0.497536  \n",
       "min      0.000000  \n",
       "25%      0.000000  \n",
       "50%      1.000000  \n",
       "75%      1.000000  \n",
       "max      1.000000  "
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 889 entries, 0 to 888\n",
      "Data columns (total 13 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   Age         889 non-null    float64\n",
      " 1   SibSp       889 non-null    float64\n",
      " 2   Parch       889 non-null    float64\n",
      " 3   Fare        889 non-null    float64\n",
      " 4   Survived    889 non-null    float64\n",
      " 5   Embarked_C  889 non-null    float64\n",
      " 6   Embarked_Q  889 non-null    float64\n",
      " 7   Embarked_S  889 non-null    float64\n",
      " 8   Sex_female  889 non-null    float64\n",
      " 9   Sex_male    889 non-null    float64\n",
      " 10  Pclass_1    889 non-null    float64\n",
      " 11  Pclass_2    889 non-null    float64\n",
      " 12  Pclass_3    889 non-null    float64\n",
      "dtypes: float64(13)\n",
      "memory usage: 90.4 KB\n"
     ]
    }
   ],
   "source": [
    "X_train_df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x720 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_train_df.hist(bins=50, figsize=(15,10))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.232543</td>\n",
       "      <td>-0.171485</td>\n",
       "      <td>0.093707</td>\n",
       "      <td>-0.069822</td>\n",
       "      <td>0.032098</td>\n",
       "      <td>-0.030436</td>\n",
       "      <td>-0.008964</td>\n",
       "      <td>-0.086506</td>\n",
       "      <td>0.086506</td>\n",
       "      <td>0.319924</td>\n",
       "      <td>0.017724</td>\n",
       "      <td>-0.289498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <td>-0.232543</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.414542</td>\n",
       "      <td>0.160887</td>\n",
       "      <td>-0.034040</td>\n",
       "      <td>-0.060074</td>\n",
       "      <td>-0.026692</td>\n",
       "      <td>0.069438</td>\n",
       "      <td>0.116348</td>\n",
       "      <td>-0.116348</td>\n",
       "      <td>-0.052894</td>\n",
       "      <td>-0.056507</td>\n",
       "      <td>0.091515</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <td>-0.171485</td>\n",
       "      <td>0.414542</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.217532</td>\n",
       "      <td>0.083151</td>\n",
       "      <td>-0.011588</td>\n",
       "      <td>-0.081585</td>\n",
       "      <td>0.061512</td>\n",
       "      <td>0.247508</td>\n",
       "      <td>-0.247508</td>\n",
       "      <td>-0.015809</td>\n",
       "      <td>-0.001278</td>\n",
       "      <td>0.014634</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fare</th>\n",
       "      <td>0.093707</td>\n",
       "      <td>0.160887</td>\n",
       "      <td>0.217532</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.255290</td>\n",
       "      <td>0.270731</td>\n",
       "      <td>-0.116684</td>\n",
       "      <td>-0.163758</td>\n",
       "      <td>0.179958</td>\n",
       "      <td>-0.179958</td>\n",
       "      <td>0.590576</td>\n",
       "      <td>-0.117609</td>\n",
       "      <td>-0.411932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Survived</th>\n",
       "      <td>-0.069822</td>\n",
       "      <td>-0.034040</td>\n",
       "      <td>0.083151</td>\n",
       "      <td>0.255290</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.169966</td>\n",
       "      <td>0.004536</td>\n",
       "      <td>-0.151777</td>\n",
       "      <td>0.541585</td>\n",
       "      <td>-0.541585</td>\n",
       "      <td>0.282368</td>\n",
       "      <td>0.095002</td>\n",
       "      <td>-0.320171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_C</th>\n",
       "      <td>0.032098</td>\n",
       "      <td>-0.060074</td>\n",
       "      <td>-0.011588</td>\n",
       "      <td>0.270731</td>\n",
       "      <td>0.169966</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.148646</td>\n",
       "      <td>-0.782613</td>\n",
       "      <td>0.084520</td>\n",
       "      <td>-0.084520</td>\n",
       "      <td>0.299472</td>\n",
       "      <td>-0.126039</td>\n",
       "      <td>-0.154785</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_Q</th>\n",
       "      <td>-0.030436</td>\n",
       "      <td>-0.026692</td>\n",
       "      <td>-0.081585</td>\n",
       "      <td>-0.116684</td>\n",
       "      <td>0.004536</td>\n",
       "      <td>-0.148646</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.499261</td>\n",
       "      <td>0.075217</td>\n",
       "      <td>-0.075217</td>\n",
       "      <td>-0.154680</td>\n",
       "      <td>-0.127705</td>\n",
       "      <td>0.237035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_S</th>\n",
       "      <td>-0.008964</td>\n",
       "      <td>0.069438</td>\n",
       "      <td>0.061512</td>\n",
       "      <td>-0.163758</td>\n",
       "      <td>-0.151777</td>\n",
       "      <td>-0.782613</td>\n",
       "      <td>-0.499261</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.121405</td>\n",
       "      <td>0.121405</td>\n",
       "      <td>-0.165022</td>\n",
       "      <td>0.190824</td>\n",
       "      <td>-0.013594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex_female</th>\n",
       "      <td>-0.086506</td>\n",
       "      <td>0.116348</td>\n",
       "      <td>0.247508</td>\n",
       "      <td>0.179958</td>\n",
       "      <td>0.541585</td>\n",
       "      <td>0.084520</td>\n",
       "      <td>0.075217</td>\n",
       "      <td>-0.121405</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.093142</td>\n",
       "      <td>0.066459</td>\n",
       "      <td>-0.134227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex_male</th>\n",
       "      <td>0.086506</td>\n",
       "      <td>-0.116348</td>\n",
       "      <td>-0.247508</td>\n",
       "      <td>-0.179958</td>\n",
       "      <td>-0.541585</td>\n",
       "      <td>-0.084520</td>\n",
       "      <td>-0.075217</td>\n",
       "      <td>0.121405</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.093142</td>\n",
       "      <td>-0.066459</td>\n",
       "      <td>0.134227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass_1</th>\n",
       "      <td>0.319924</td>\n",
       "      <td>-0.052894</td>\n",
       "      <td>-0.015809</td>\n",
       "      <td>0.590576</td>\n",
       "      <td>0.282368</td>\n",
       "      <td>0.299472</td>\n",
       "      <td>-0.154680</td>\n",
       "      <td>-0.165022</td>\n",
       "      <td>0.093142</td>\n",
       "      <td>-0.093142</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.287653</td>\n",
       "      <td>-0.625395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass_2</th>\n",
       "      <td>0.017724</td>\n",
       "      <td>-0.056507</td>\n",
       "      <td>-0.001278</td>\n",
       "      <td>-0.117609</td>\n",
       "      <td>0.095002</td>\n",
       "      <td>-0.126039</td>\n",
       "      <td>-0.127705</td>\n",
       "      <td>0.190824</td>\n",
       "      <td>0.066459</td>\n",
       "      <td>-0.066459</td>\n",
       "      <td>-0.287653</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.567432</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass_3</th>\n",
       "      <td>-0.289498</td>\n",
       "      <td>0.091515</td>\n",
       "      <td>0.014634</td>\n",
       "      <td>-0.411932</td>\n",
       "      <td>-0.320171</td>\n",
       "      <td>-0.154785</td>\n",
       "      <td>0.237035</td>\n",
       "      <td>-0.013594</td>\n",
       "      <td>-0.134227</td>\n",
       "      <td>0.134227</td>\n",
       "      <td>-0.625395</td>\n",
       "      <td>-0.567432</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 Age     SibSp     Parch      Fare  Survived  Embarked_C  \\\n",
       "Age         1.000000 -0.232543 -0.171485  0.093707 -0.069822    0.032098   \n",
       "SibSp      -0.232543  1.000000  0.414542  0.160887 -0.034040   -0.060074   \n",
       "Parch      -0.171485  0.414542  1.000000  0.217532  0.083151   -0.011588   \n",
       "Fare        0.093707  0.160887  0.217532  1.000000  0.255290    0.270731   \n",
       "Survived   -0.069822 -0.034040  0.083151  0.255290  1.000000    0.169966   \n",
       "Embarked_C  0.032098 -0.060074 -0.011588  0.270731  0.169966    1.000000   \n",
       "Embarked_Q -0.030436 -0.026692 -0.081585 -0.116684  0.004536   -0.148646   \n",
       "Embarked_S -0.008964  0.069438  0.061512 -0.163758 -0.151777   -0.782613   \n",
       "Sex_female -0.086506  0.116348  0.247508  0.179958  0.541585    0.084520   \n",
       "Sex_male    0.086506 -0.116348 -0.247508 -0.179958 -0.541585   -0.084520   \n",
       "Pclass_1    0.319924 -0.052894 -0.015809  0.590576  0.282368    0.299472   \n",
       "Pclass_2    0.017724 -0.056507 -0.001278 -0.117609  0.095002   -0.126039   \n",
       "Pclass_3   -0.289498  0.091515  0.014634 -0.411932 -0.320171   -0.154785   \n",
       "\n",
       "            Embarked_Q  Embarked_S  Sex_female  Sex_male  Pclass_1  Pclass_2  \\\n",
       "Age          -0.030436   -0.008964   -0.086506  0.086506  0.319924  0.017724   \n",
       "SibSp        -0.026692    0.069438    0.116348 -0.116348 -0.052894 -0.056507   \n",
       "Parch        -0.081585    0.061512    0.247508 -0.247508 -0.015809 -0.001278   \n",
       "Fare         -0.116684   -0.163758    0.179958 -0.179958  0.590576 -0.117609   \n",
       "Survived      0.004536   -0.151777    0.541585 -0.541585  0.282368  0.095002   \n",
       "Embarked_C   -0.148646   -0.782613    0.084520 -0.084520  0.299472 -0.126039   \n",
       "Embarked_Q    1.000000   -0.499261    0.075217 -0.075217 -0.154680 -0.127705   \n",
       "Embarked_S   -0.499261    1.000000   -0.121405  0.121405 -0.165022  0.190824   \n",
       "Sex_female    0.075217   -0.121405    1.000000 -1.000000  0.093142  0.066459   \n",
       "Sex_male     -0.075217    0.121405   -1.000000  1.000000 -0.093142 -0.066459   \n",
       "Pclass_1     -0.154680   -0.165022    0.093142 -0.093142  1.000000 -0.287653   \n",
       "Pclass_2     -0.127705    0.190824    0.066459 -0.066459 -0.287653  1.000000   \n",
       "Pclass_3      0.237035   -0.013594   -0.134227  0.134227 -0.625395 -0.567432   \n",
       "\n",
       "            Pclass_3  \n",
       "Age        -0.289498  \n",
       "SibSp       0.091515  \n",
       "Parch       0.014634  \n",
       "Fare       -0.411932  \n",
       "Survived   -0.320171  \n",
       "Embarked_C -0.154785  \n",
       "Embarked_Q  0.237035  \n",
       "Embarked_S -0.013594  \n",
       "Sex_female -0.134227  \n",
       "Sex_male    0.134227  \n",
       "Pclass_1   -0.625395  \n",
       "Pclass_2   -0.567432  \n",
       "Pclass_3    1.000000  "
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corr_matrix = X_train_df.corr()\n",
    "corr_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x576 with 121 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "attributes = ['Survived', 'Age', 'Parch', 'Fare', 'Embarked_C', 'Embarked_S', 'Sex_female', 'Sex_male', 'Pclass_1', 'Pclass_2', 'Pclass_3' ]\n",
    "scatter_matrix(X_train_df[attributes],figsize=(20,8))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x576 with 9 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "scatter_matrix(X_train_df[['Survived','Sex_female', 'Sex_male']],figsize=(20,8))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_final_df = X_train_df.drop(['Survived'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>22.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Age  SibSp  Parch     Fare  Embarked_C  Embarked_Q  Embarked_S  \\\n",
       "0  22.0    1.0    0.0   7.2500         0.0         0.0         1.0   \n",
       "1  38.0    1.0    0.0  71.2833         1.0         0.0         0.0   \n",
       "2  26.0    0.0    0.0   7.9250         0.0         0.0         1.0   \n",
       "3  35.0    1.0    0.0  53.1000         0.0         0.0         1.0   \n",
       "4  35.0    0.0    0.0   8.0500         0.0         0.0         1.0   \n",
       "\n",
       "   Sex_female  Sex_male  Pclass_1  Pclass_2  Pclass_3  \n",
       "0         0.0       1.0       0.0       0.0       1.0  \n",
       "1         1.0       0.0       1.0       0.0       0.0  \n",
       "2         1.0       0.0       0.0       0.0       1.0  \n",
       "3         1.0       0.0       1.0       0.0       0.0  \n",
       "4         0.0       1.0       0.0       0.0       1.0  "
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_final_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_final = X_train_final_df.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22.    ,  1.    ,  0.    ,  7.25  ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [38.    ,  1.    ,  0.    , 71.2833,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [26.    ,  0.    ,  0.    ,  7.925 ,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [35.    ,  1.    ,  0.    , 53.1   ,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [35.    ,  0.    ,  0.    ,  8.05  ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [28.    ,  0.    ,  0.    ,  8.4583,  0.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [54.    ,  0.    ,  0.    , 51.8625,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [ 2.    ,  3.    ,  1.    , 21.075 ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [27.    ,  0.    ,  2.    , 11.1333,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [14.    ,  1.    ,  0.    , 30.0708,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  0.    ,  1.    ,  0.    ]])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_final[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train_data_drop_na['Survived']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "log_clf = LogisticRegression(random_state=42) # 采用逻辑回归分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LogisticRegression:79.42%\n",
      "LogisticRegression_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "log_name, log_score = general_algorithm(log_clf, X_train_final, y_train, X_test, verbose=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 1, 0, 1, 0, 1, 0], dtype=int64)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_clf.predict(X_test[:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "knn_clf = KNeighborsClassifier() # K近邻值算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KNeighborsClassifier:70.19%\n",
      "KNeighborsClassifier_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "knn_name, knn_score = general_algorithm(knn_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 1, 0, 0, 0, 1, 0, 1], dtype=int64)"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf.predict(X_test[0:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "sgd_clf = SGDClassifier(random_state=42) # 梯度下降分类法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SGDClassifier:68.29%\n",
      "SGDClassifier_result.csv generated!\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "sgd_name, sgd_score = general_algorithm(sgd_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "forest_clf = RandomForestClassifier(n_estimators=90, random_state=42) # 随机森林分类法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RandomForestClassifier:81.67%\n",
      "RandomForestClassifier_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "forest_name, forest_score = general_algorithm(forest_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "decision_tree = DecisionTreeClassifier(random_state=42) # 决策树"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DecisionTreeClassifier:78.18%\n",
      "DecisionTreeClassifier_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "decision_tree_name, decision_tree_score = general_algorithm(decision_tree, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "svm_clf = SVC(gamma=\"auto\")  # SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SVC:72.0%\n",
      "SVC_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "svm_name, svm_score = general_algorithm(svm_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "linear_svc = LinearSVC() # 支持向量机线性分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LinearSVC:73.89%\n",
      "LinearSVC_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "linear_svc_name, linear_svc_score = general_algorithm(linear_svc, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "gaussian_clf = GaussianNB() # 高斯贝叶斯分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GaussianNB(priors=None):78.29%\n",
      "GaussianNB(priors=None)_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "gaussian_name, gaussian_score = general_algorithm(gaussian_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "perceptron_clf = Perceptron() # 感知机"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Perceptron:58.92%\n",
      "Perceptron_result.csv generated!\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\administrator.ieiwxx2xksvb332\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "perceptron_name, perceptron_score = general_algorithm(perceptron_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>RandomForestClassifier</td>\n",
       "      <td>81.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>LogisticRegression</td>\n",
       "      <td>79.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>GaussianNB(priors=None)</td>\n",
       "      <td>78.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>DecisionTreeClassifier</td>\n",
       "      <td>78.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>LinearSVC</td>\n",
       "      <td>73.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SVC</td>\n",
       "      <td>72.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>KNeighborsClassifier</td>\n",
       "      <td>70.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>SGDClassifier</td>\n",
       "      <td>68.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Perceptron</td>\n",
       "      <td>58.92</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     Model  Score\n",
       "3   RandomForestClassifier  81.67\n",
       "0       LogisticRegression  79.42\n",
       "7  GaussianNB(priors=None)  78.29\n",
       "4   DecisionTreeClassifier  78.18\n",
       "6                LinearSVC  73.89\n",
       "5                      SVC  72.00\n",
       "1     KNeighborsClassifier  70.19\n",
       "2            SGDClassifier  68.29\n",
       "8               Perceptron  58.92"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "models = pd.DataFrame({\n",
    "    'Model': [log_name, knn_name, sgd_name, forest_name, decision_tree_name, svm_name, linear_svc_name, gaussian_name, perceptron_name],\n",
    "    'Score': [log_score, knn_score, sgd_score, forest_score, decision_tree_score, svm_score, linear_svc_score, gaussian_score, perceptron_score]})\n",
    "models.sort_values(by='Score', ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 随机森林的精准度是几种种尝试的算法里面最高的， 在没有优化数据或特征之前使用此算法最为适合。 \n",
    "# 后续需要加强的是把这次放弃的几个特征做特征工程后加入到训练数据当中，再尝试是否可以提高精准度。\n",
    "# 各种算法的预测结果都有按照kaggle官方要求的方式保存到对应算法名称的csv。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
